home *** CD-ROM | disk | FTP | other *** search
- program TrkTable;
- uses
- DB, DBTables;
- {$APPTYPE CONSOLE}
- var
- f: Text;
- Str,Agent: String;
- hits: Integer = 0;
- refer: Integer = 0;
-
- function CopyStripDelete(var Str: String; From,Len: Integer): String;
- begin
- Result := Copy(Str,From,Len); { copy }
- Delete(Str,1,Len); { delete }
- Len := Length(Result);
- while Result[Len] = #32 do Dec(Len);
- SetLength(Result,Len) { strip }
- end {CopyStripDelete};
-
- begin
- if ParamCount = 0 then
- begin
- writeln('Usage: TrkTable [datfile]');
- Halt
- end;
-
- with TTable.Create(nil) do
- try
- Active := False;
- TableType := ttParadox;
- TableName := ParamStr(1)+'.DB';
- with FieldDefs do
- begin
- Clear;
- Add('DateTime', ftString, 24, FALSE);
- Add('IP', ftString, 16, FALSE);
- Add('UserAgent', ftString,128, FALSE);
- Add('ThisPage', ftString, 128, FALSE);
- Add('Referrer', ftString, 128, FALSE);
- end;
- CreateTable;
- Open;
- System.Assign(f,ParamStr(1)+'.trk');
- System.Reset(f);
- while not System.Eof(f) do
- begin
- readln(f,Str);
- Append;
- FieldByName('DateTime').AsString :=
- CopyStripDelete(Str,1,24);
- FieldByName('IP').AsString :=
- CopyStripDelete(Str,1,16);
- Agent := CopyStripDelete(Str,1,128);
- {$IFNDEF AGENTOS}
- if pos('(compatible; ',Agent) > 0 then
- begin
- System.Delete(Agent,1,pos('(compatible; ',Agent)+12);
- if Pos(';',Agent) > 0 then
- System.Delete(Agent,Pos(';',Agent),255)
- else
- if Pos(')',Agent) > 0 then
- System.Delete(Agent,Pos(')',Agent),255)
- end
- else
- if Pos(' ',Agent) > 0 then
- System.Delete(Agent,Pos(' ',Agent),255);
- {$ENDIF}
- FieldByName('UserAgent').AsString := Agent;
- FieldByName('ThisPage').AsString :=
- CopyStripDelete(Str,1,128);
- FieldByName('Referrer').AsString :=
- CopyStripDelete(Str,1,128);
- if FieldByName('Referrer').AsString <> '@' then
- Inc(refer); // actual referrer info
- Post;
- Inc(hits)
- end;
- writeln(hits,' page requests (',
- (refer*100) div hits,'% referred) ',
- 'in logfile ',ParamStr(1))
- finally
- System.Close(f);
- Close;
- Free
- end
- end.
-